const express = require("express");
const moment = require("moment");
const middleware = require("./modules/middleware");
const contentListM = require("./modules/db/collections/contentList");
const app = express();

app.use(express.json());// 用于接收post过来的application/json数据。
app.use(middleware.sendJson())
// 允许跨域
app.use((req,res,next)=>{
    res.set("Access-Control-Allow-Origin","*");
    res.set("Access-Control-Allow-Methods","*");
    res.set("Access-Control-Allow-Headers","*");
    next();
})
// 添加微博
app.post("/weibo",async (req,res)=>{
    /*思路：
    * 1- 接收数据：content   application/json
    * 2- 验证数据是否重复
    *   2-1 重复：响应失败信息：不允许重复
    *   2-2 不重复
    *       2-2-1 将接收到的数据放置到数据库
    * */
    try{
        // 接收数据。
        const {content} = req.body;
        // 获取与微博内容相同的文档数量
        const count = await contentListM.count({content});
        if(count>0) res.sendJson("请不要输入重复的信息");
        else{
            await contentListM.insertOne({
                content,// 微博内容
                addTime:moment().format("YYYY-MM-DD HH:mm:ss")
            })
            res.sendJson("添加微博成功",1);
        }
    }catch (err){
        res.sendJson();
    }


})
// 删除微博
app.delete("/weibo/:id",async (req,res)=>{
    try{
        const {id} = req.params;
        await contentListM.deleteOneById(id)
        res.sendJson("删除成功",1);
    }catch (err){
        res.sendJson();
    }
})
// 修改微博
app.put("/weibo/:id/:type",async (req,res)=>{
    try{
        const {id,type} = req.params;
        // type ,1topNum 2 downNum
        await contentListM.updateOneById(id,{
            $inc:{
                [type/1===1?"topNum":"downNum"]:1
            }
        })
        res.sendJson("修改成功",1);
    }catch (err){
        res.sendJson();
    }

})


// 查找微博 pageNo:指定页码    pageSize：指定每页显示的条数
// http://zhangpeiyue.com:8081/weibo?pageNo=1&pageSize=3
app.get("/weibo",async (req,res)=>{
    // const {pageNo=1,pageSize=3} = req.query;
    // 接收数据
    try{
        let pageNo = (req.query.pageNo || 1)/1;
        const pageSize = (req.query.pageSize || 1)/1;

        // 总条数
        const total = await contentListM.count();

        // 总页数
        let pageSum = Math.ceil(total/pageSize);
        console.log("pageSum",total,pageSize,pageSum)
        if(pageSum<1) pageSum = 1;

        // 当前页
        if(pageNo<1) pageNo = 1;
        if(pageNo>pageSum) pageNo = pageSum;

        const contentList = await contentListM.find({
            sortObj:{
                addTime:-1
            },
            limit:pageSize,
            skip:(pageNo-1)*pageSize
        })

        res.json({
            ok:1,
            contentList,
            pageNo,
            pageSum
        })
    }catch (err){
       res.sendJson();
    }






})


app.listen(8081,()=>{
    console.log("success->8081");
})